package com.minimalist.common.feign.client.tc;

import com.minimalist.common.config.mybatis.bo.PageResp;
import com.minimalist.common.entity.tc.entity.vo.plateNumber.TcPlateNumberQueryVO;
import com.minimalist.common.entity.tc.entity.vo.plateNumber.TcPlateNumberVO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 车牌号管理 Feign 客户端降级实现
 *
 * @author minimalist
 */
@Component
public class TcPlateNumberFeignClientFallback implements TcPlateNumberFeignClient{
    private static final Logger log = LoggerFactory.getLogger(TcPlateNumberFeignClientFallback.class);

    @Override
    public ResponseEntity<Void> addPlateNumber(TcPlateNumberVO plateNumberVO){
        log.error("添加车牌号服务不可用，触发降级，参数：{}", plateNumberVO);
        return ResponseEntity.status(HttpStatus.SERVICE_UNAVAILABLE).build();
    }

    @Override
    public ResponseEntity<Void> batchAddPlateNumber(List<TcPlateNumberVO> plateNumberVOList){
        log.error("批量添加车牌号服务不可用，触发降级，参数数量：{}", plateNumberVOList.size());
        return ResponseEntity.status(HttpStatus.SERVICE_UNAVAILABLE).build();
    }

    @Override
    public ResponseEntity<Void> updatePlateNumber(TcPlateNumberVO plateNumberVO){
        log.error("更新车牌号服务不可用，触发降级，参数：{}", plateNumberVO);
        return ResponseEntity.status(HttpStatus.SERVICE_UNAVAILABLE).build();
    }

    @Override
    public ResponseEntity<Void> deletePlateNumber(Long plateNumberId){
        log.error("删除车牌号服务不可用，触发降级，车牌号ID：{}", plateNumberId);
        return ResponseEntity.status(HttpStatus.SERVICE_UNAVAILABLE).build();
    }

    @Override
    public ResponseEntity<TcPlateNumberVO> getPlateNumber(Long plateNumberId){
        log.error("获取车牌号详情服务不可用，触发降级，车牌号ID：{}", plateNumberId);
        return ResponseEntity.status(HttpStatus.SERVICE_UNAVAILABLE).build();
    }

    @Override
    public ResponseEntity<PageResp<TcPlateNumberVO>> getPagePlateNumberList(TcPlateNumberQueryVO queryVO){
        log.error("分页查询车牌号列表服务不可用，触发降级，查询条件：{}", queryVO);
        return ResponseEntity.status(HttpStatus.SERVICE_UNAVAILABLE).body(new PageResp<>(List.of(), 0));
    }

    @Override
    public ResponseEntity<String> recognizePlateNumber(String imageBase64){
        log.error("识别车牌号服务不可用，触发降级");
        return ResponseEntity.status(HttpStatus.SERVICE_UNAVAILABLE).build();
    }
}